package com.zuipin.service;

import java.math.BigDecimal;
import java.util.List;

import com.zuipin.entity.BaseDictionaryData;
import com.zuipin.entity.product.ProductPrice;
import com.zuipin.vo.BackProInfoPrice;
import com.zuipin.vo.PriceTypeVo;
import com.zuipin.vo.ProductPriceVo;

import net.sf.json.JSONObject;

/**
 * 商品类型业务类
 *
 * @ClassName IProductPriceService
 * @author wangcongyi
 * @date 2017年4月25日 下午8:50:44
 */
public interface IProductPriceService {
	
	// 通过会员ID和系统ID获取会员价
	public BigDecimal getMemberPrice(Long memberId, Long sysId, BigDecimal price);
	
	// 通过会员ID和系统ID和商品ID获取会员价
	public PriceTypeVo getMemberPrice(Long memberId, Long sysId, BigDecimal price, Long proId);
	
	// 删除商品价格信息通过商品ID
	public int deleteByProId(JSONObject object);
	
	// 批量添加商品价格信息
	public int insertBatch(List<ProductPrice> productPrices);
	
	// 通过商品ID和系统ID获取商品价格列表(排除代理价)
	List<ProductPrice> selectByProId(JSONObject object);
	
	// 通过商品ID和系统ID获取商品价格列表(不排除代理价)
	List<ProductPrice> findByProId(JSONObject object);
	
	// 通过商品Sku和系统ID获取商品价格列表(不排除代理价)
	List<ProductPrice> findByProSku(JSONObject object);
	
	// 通过商品ID和系统ID获取商品代理价
	ProductPrice selectAgentsByProId(JSONObject params);
	
	// 获取商品该平台下未设置价格的类型
	public List<BaseDictionaryData> getSetablePriceType(ProductPrice price);
	
	// 获取该商品已设置的价格类型列表数据
	public List<ProductPrice> getSettledPrice(ProductPrice price);
	
	public List<ProductPriceVo> findByProductId(Long sysId, Long proId);
	
	/** 
	 * 根据商品类型获取价格
	 * 
	 * @Title: findByType 
	 * @author: wuyicheng
	 * @date: 2017年8月8日下午2:01:33 
	 * @param proId 商品Id
	 * @param sysId 系统ID
	 * @param priceType 商品类型 
	 * @return
	 * @return: ProductPrice
	 * @throws 
	 */
	public ProductPrice findByType(Long proId, Long sysId, Long priceType);
	
	/**
	 * 更据商品ID获取不同平台的不同类型价格
	 */
	public List<BackProInfoPrice> findProInfoPrice(Long proId);
	
	public int insertSelective(ProductPrice record);
	
	int updateBackProInfoPrice(ProductPrice record);
	
	BigDecimal findSupplyPrice(Long proId);
	
}
